/**
 * Generali Solutions d'assurances - Tous droits réservés &copy; 2007 - 2010
 */
package fr.generali.accueilclient.resume.role.om.impl;

import java.util.List;

import fr.generali.accueilclient.resume.contrat.om.IRole;
import fr.generali.accueilclient.resume.role.om.IResumeRole;
import fr.generali.accueilclient.utils.constantes.CodeRoleEnum;

/**
 * @author Holmes Kelly
 */
public abstract class AbstractResumeRole implements IResumeRole {

    /**
     * Le rôle
     */
    private List<IRole> roles;

    /**
     * {@inheritDoc}
     */
    public List<IRole> getRoles() {
        return roles;
    }

    /**
     * {@inheritDoc}
     */
    public void setRoles(List<IRole> roles) {
        this.roles = roles;
    }

    /**
     * {@inheritDoc}
     */
    public IRole getAssure() {

        return getRoleSelonAPS(CodeRoleEnum.ROLE_ASSURE);
    }

    /**
     * {@inheritDoc}
     */
    public IRole getPayeur() {

        return getRoleSelonAPS(CodeRoleEnum.ROLE_PAYEUR);
    }

    /**
     * {@inheritDoc}
     */
    public IRole getSouscripteur() {

        return getRoleSelonAPS(CodeRoleEnum.ROLE_SOUSCRIPTEUR);
    }

    /**
     * @param codeRoleEnum code role
     * @return role selon fonctionnalite Assure/Payeur/Souscripteur
     */
    private IRole getRoleSelonAPS(CodeRoleEnum codeRoleEnum) {
        if (roles != null) {
            for (IRole role : roles) {
                if (codeRoleEnum.getCodeRole().equals(role.getRole())) {
                    return role;
                }
            }
        }
        return null;
    }

}
